package org.example.domain.config;

import java.time.Duration;
import java.util.List;

/**
 * 配置属性接口 - 领域层定义
 */
public interface PanSouProperties {

    /**
     * 获取默认频道列表
     */
    List<String> getDefaultChannels();

    /**
     * 获取默认并发数
     */
    int getDefaultConcurrency();

    /**
     * 获取缓存配置
     */
    CacheConfig getCache();

    /**
     * 获取异步配置
     */
    AsyncConfig getAsync();

    interface CacheConfig {
        Duration getTtl();
        int getMaxSize();
    }

    interface AsyncConfig {
        boolean isPluginEnabled();
        Duration getResponseTimeout();
        Duration getProcessingTimeout();
    }
}